<?php

/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */

/**
 * Description of cita_medico_controller
 *
 * @author jorge-luis
 */
class cita_medica_controller extends CI_Controller {

    function __construct() {
        parent::__construct();
        session_start();
        $this->load->model('especialidad');
        $this->load->library('form_validation');
        $this->load->helper(array('url', 'form'));
        $this->load->model('medico');
        $this->load->model('horario');
        $this->load->model('horario_medico');
        $this->load->model('cita');
        $this->load->model('paciente');
        date_default_timezone_set('America/Guayaquil');
    }

    function cambiar_agenda($year = null, $month = null) {
        $prefs = array(
            'start_day' => 'lunes',
            'show_next_prev' => TRUE,
            'next_prev_url' => 'http://localhost/clinica/index.php/cita_medica_controller/cambiar_agenda/'
        );

        $prefs['template'] = '
        //abrimos la tabla del calendario
        {table_open}<table id="calendario">{/table_open}

        //abrimos la cabecera del calendario
        {heading_row_start}<tr>{/heading_row_start}

        //enlace anterior
        {heading_previous_cell}<th><a id="links" class="previo" href="{previous_url}"><<</a></th>{/heading_previous_cell}

        //fecha entre los enlaces de la cabecera
        {heading_title_cell}<th colspan="{colspan}">{heading}</th>{/heading_title_cell}

        //enlace siguiente
        {heading_next_cell}<th><a id="links" class="siguiente" href="{next_url}">>></a></th>{/heading_next_cell}

        //cerramos la cabecera del calendario
        {heading_row_end}</tr>{/heading_row_end}

        //dÃ­as de la semana --> lunes => martes etc
        {week_row_start}<tr>{/week_row_start}
        {week_day_cell}<td class="head_calendar">{week_day}</td>{/week_day_cell}
        {week_row_end}</tr>{/week_row_end}
        //fin dÃ­as de la semana


        {cal_row_start}<tr class="dias">{/cal_row_start}
        {cal_cell_start}<td  class="dia">{/cal_cell_start}

        {cal_cell_content}
        <div class="num_dia">{day}</div>
        <div class="contenido">{content}</div>
        {/cal_cell_content}

        {cal_cell_content_today}
        <div class="hoy">{day}</div>
        <div class="contenido_hoy">{content}</div>
        {/cal_cell_content_today}

        {cal_cell_no_content}
        <div class="num_dia">{day}</div>
        {/cal_cell_no_content}

        //el dÃ­a actual
        {cal_cell_no_content_today}
        <div class="highlight">{day}</div>
        {/cal_cell_no_content_today}

        {cal_cell_blank}&nbsp;{/cal_cell_blank}
        {cal_cell_end}</td>{/cal_cell_end}
        {cal_row_end}</tr>{/cal_row_end}

        //cerramos el calendario
        {table_close}</table>{/table_close}
        ';
        $this->load->library('calendar', $prefs);
        if ($year == null) {
            $year = date('Y');
        }
        if ($month == null) {
            $month = date('m');
        }
        $paciente_id = $this->uri->segment(5);
        if ($paciente_id != null) {
            $_SESSION['paciente_id_cambiar'] = $paciente_id;
        }
        $medico_id = $this->uri->segment(6);
        $cita_id = $this->uri->segment(7);
        if ($cita_id != null) {
            $_SESSION['cita_id_cambiar'] = $cita_id;
        }
        if ($medico_id != null) {
            $this->medico->modificar2($medico_id);
            $_SESSION['medico_id_cambiar'] = $medico_id;
        }
        $data['title'] = 'Calendario';
        $data['horarios'] = $this->horario->buscarByMedico($_SESSION['medico_id_cambiar']);
        $data['calendario'] = $this->genera_calendario($year, $month, $_SESSION['medico_id_cambiar']);
        $this->load->view('/inicio/header', $data);
        $data['main'] = 'frm_cambiar_agenda_paciente';
        $this->load->view('/frm_principal_admin', $data);
    }

    function agenda($year = null, $month = null) {
        $prefs = array(
            'start_day' => 'lunes',
            'show_next_prev' => TRUE,
            'next_prev_url' => 'http://localhost/clinica/index.php/cita_medica_controller/agenda/'
        );

        $prefs['template'] = '
        //abrimos la tabla del calendario
        {table_open}<table id="calendario">{/table_open}

        //abrimos la cabecera del calendario
        {heading_row_start}<tr>{/heading_row_start}

        //enlace anterior
        {heading_previous_cell}<th><a id="links" class="previo" href="{previous_url}"><<</a></th>{/heading_previous_cell}

        //fecha entre los enlaces de la cabecera
        {heading_title_cell}<th colspan="{colspan}">{heading}</th>{/heading_title_cell}

        //enlace siguiente
        {heading_next_cell}<th><a id="links" class="siguiente" href="{next_url}">>></a></th>{/heading_next_cell}

        //cerramos la cabecera del calendario
        {heading_row_end}</tr>{/heading_row_end}

        //dÃ­as de la semana --> lunes => martes etc
        {week_row_start}<tr>{/week_row_start}
        {week_day_cell}<td class="head_calendar">{week_day}</td>{/week_day_cell}
        {week_row_end}</tr>{/week_row_end}
        //fin dÃ­as de la semana


        {cal_row_start}<tr class="dias">{/cal_row_start}
        {cal_cell_start}<td  class="dia">{/cal_cell_start}

        {cal_cell_content}
        <div class="num_dia">{day}</div>
        <div class="contenido">{content}</div>
        {/cal_cell_content}

        {cal_cell_content_today}
        <div class="hoy">{day}</div>
        <div class="contenido_hoy">{content}</div>
        {/cal_cell_content_today}

        {cal_cell_no_content}
        <div class="num_dia">{day}</div>
        {/cal_cell_no_content}

        //el dÃ­a actual
        {cal_cell_no_content_today}
        <div class="highlight">{day}</div>
        {/cal_cell_no_content_today}

        {cal_cell_blank}&nbsp;{/cal_cell_blank}
        {cal_cell_end}</td>{/cal_cell_end}
        {cal_row_end}</tr>{/cal_row_end}

        //cerramos el calendario
        {table_close}</table>{/table_close}
        ';
        $this->load->library('calendar', $prefs);
        if ($year == null) {
            $year = date('Y');
        }
        if ($month == null) {
            $month = date('m');
        }
        $medico_id = 0;

        if (isset($_POST['medicos'])) {
            foreach ($_POST['medicos'] as $value) {
                $medico_id = $value;
                $_SESSION['medico_id'] = $medico_id;
            }
            $this->medico->modificar1($medico_id);
        }
        $date = new DateTime();
//        $date->setDate($year, $mes, $dia);
//        $fecha = date_format($date, 'Y-m-d');
        $data['title'] = 'Calendario';
        $data['horarios'] = $this->horario->buscarByMedico($_SESSION['medico_id']);
//       $data['horarios_medico']= $this->horario_medico->buscarByMedicoDisponible($_SESSION['medico_id'], $fecha);
        $data['calendario'] = $this->genera_calendario($year, $month, $_SESSION['medico_id']);
        $this->load->view('/inicio/header', $data);
        $data['main'] = 'frm_seleccionar_fecha_cita';
        $this->load->view('/frm_principal_paciente', $data);
    }

    function detalle() {
        $h = $this->cita->citasByMedico($_SESSION['medico_id'], $this->input->post("fechax"));
        $data['citas'] = $h;
        $data['title'] = 'Citas Reservadas';
        $this->load->view('/inicio/header', $data);
        $data['main'] = 'frm_detalle_cita';
        $this->load->view('/frm_principal_paciente', $data);
    }

    function genera_calendario($year, $month, $medico_id) {
        $data = $this->cita->buscarByMedico($medico_id, $year, $month);
        return $this->calendar->generate($year, $month, $data);
    }

    function buscar() {
        $data['especialidades'] = $this->especialidad->buscarActivos();
        $data['medicos'] = [];
        $data['especialidad_select'] = ['nombre' => ''];
        $data['title'] = 'Buscar Medicos';
        $data['main'] = 'frm_buscar_medicos_cita';
        $this->load->view('/inicio/header', $data);
        $this->load->view('/frm_principal_paciente', $data);
    }

    function buscar_citas() {
        $data['citas'] = $this->cita->buscar($this->input->post("filtro"));
        $data['title'] = 'Buscar Citas';
        $data['main'] = 'frm_buscar_cita';
        $this->load->view('/inicio/header', $data);
        $this->load->view('/frm_principal_admin', $data);
    }

    function buscarMedicosByEspecialidad() {

        $especialidad_id = $this->input->post('id', TRUE);
//        $data['medicos'] = $this->medico->buscarByEspecialidad($especialidad_id);
        header('Content-Type: application/x-json; charset=utf-8');
        echo(json_encode($this->medico->buscarByEspecialidad($especialidad_id)));
//        $data['especialidad_select'] = $this->especialidad->getEspecialidad($especialidad_id);
//        $data['especialidades'] = $this->especialidad->buscarActivos();
//        $data['title'] = 'Buscar Medicos';
//        $data['main'] = 'frm_buscar_medicos_cita';
//        $this->load->view('/inicio/header', $data);
//        $this->load->view('/frm_principal_paciente', $data);
    }

    function buscar_horario_medico() {
        $data['medico'] = $this->medico->modificar1($_SESSION['medico_id']);
        $data['horarios'] = $this->horario->buscarByMedico($_SESSION['medico_id']);
        $data['citas'] = $this->horario->buscarByPaciente($_SESSION['paciente_id']);
        $data['title'] = 'Agenda';
        $data['main'] = 'frm_agenda_medico';
        $this->load->view('/inicio/header', $data);
        $this->load->view('/frm_principal_paciente', $data);
    }

    function buscar_citas_paciente() {
        $data['citas'] = $this->cita->buscarByPaciente($_SESSION['paciente_id']);
        $data['title'] = 'Mis citas';
        $data['main'] = 'frm_citas_paciente';
        $this->load->view('/inicio/header', $data);
        $this->load->view('/frm_principal_paciente', $data);
    }

    function buscar_citas_medico() {
        $data['citas'] = $this->cita->buscarByMedico1($_SESSION['m_id'], $this->input->post("filtro"));
        $data['title'] = 'Mis citas';
        $data['main'] = 'frm_citas_medico';
        $this->load->view('/inicio/header', $data);
        $this->load->view('/frm_principal_medico', $data);
    }

    function aprobar() {
        $cita_id = $this->uri->segment(3);
        $datos['estado'] = 1;
        $this->cita->editar($datos, $cita_id);
        $this->buscar_citas();
    }

    function no_aprobar() {
        $datos['estado'] = 0;
        $cita_id = $this->uri->segment(3);
        $this->cita->editar($datos, $cita_id);
        $this->buscar_citas();
    }

    function atendido() {
        $datos['estado'] = 2;
        $cita_id = $this->uri->segment(3);
        $this->cita->editar($datos, $cita_id);
        $this->buscar_citas_medico();
    }

    function editar() {
        $datos = array(
            'paciente' => $_SESSION['paciente_id_cambiar'],
            'estado' => 0,
            'pago' => 0,
        );
        $horario_medico_id = $this->uri->segment(3);
        $fecha = $this->input->post("fecha");
        $medico = $this->cita->buscarByMedicoDisponible($_SESSION['medico_id_cambiar'], $fecha);
        $datos['horario_medico_id'] = $horario_medico_id;
        $datos['fecha'] = $fecha;
        $id = 0;
        if ($medico == null) {
            $id = $this->cita->editar($datos, $_SESSION['cita_id_cambiar']);
        } else {
            echo '<script>alert("No se puede grabar")</script>';
        }
        $this->cambiar_agenda();
    }

    function guardar() {
//        $this->load->library('email');
//        $config['protocol'] = 'smtp';
//        $config["smtp_host"] = 'smtp.gmail.com';
//        $config["smtp_user"] = 'jlmallas@unl.edu.ec';
//        $config["smtp_pass"] = '160190jorge';
//        $config["smtp_port"] = '587';
//        $config['charset'] = 'utf-8';
//        $config['wordwrap'] = TRUE;
//        $config['validate'] = true;
//        $this->email->initialize($config);
        $horario_medico_id = $this->uri->segment(3);
        $fecha = $this->input->post("fecha");
        $medico = $this->cita->buscarByMedicoDisponible($_SESSION['medico_id'], $fecha);
        if ($medico == null) {
            if ($_SESSION['paciente_id'] != 0) {
                $datos = array(
                    'paciente' => $_SESSION['paciente_id'],
                    'estado' => 0,
                    'pago' => 0,
                );
                $datos['horario_medico_id'] = $horario_medico_id;
                $datos['fecha'] = $fecha;
                // $p = $this->paciente->obtener($_SESSION['paciente_id']);
                $id = 0;

                $id = $this->cita->grabar($datos);
                $this->agenda();
                //$me = $this->medico->modificar1($_SESSION['medico_id']);
//                $this->email->initialize($config);
//                $this->email->set_newline("\r\n");
//                $this->email->from('jlmallas@unl.edu.ec', 'CLINICA XXX');
//                $this->email->to($p['email']);
//                $this->email->subject('Cita Médica');
//                $this->email->message('Ud. tiene una cita médica en la fecha:' . $fecha . ' con el médico: ' . $me[0]['nombres'] . " " . $me[0]['apellidos']);
//                $this->email->send();
            } else {
                $_SESSION['horario_medico_id'] = $horario_medico_id;
                $_SESSION['fecha_cita'] = $fecha;
                $data['title'] = 'Registrar Invitado';
                $this->load->view('/inicio/header', $data);
                $data['main'] = 'frm_seleccionar_fecha_cita';
                $this->load->view('/frm_registrar_invitado', $data);
            }
        } else {
            echo '<script>alert("No se puede grabar")</script>';
            $this->agenda();
        }
    }

    function eliminar_cita_paciente() {
        $cita_id = $this->uri->segment(3);
        $this->cita->eliminar($cita_id);
        $this->buscar_citas_paciente();
    }

}
